package com.lagou;

import java.util.HashSet;

/**
 *  判断数组中所有的数字是否只出现一次。给定一个数组array，判断数组 array 中是否所有的数字都只出现过一次。
 *  例如，arr = {1, 2, 3}，输出 YES。又如，arr = {1, 2, 1}，输出 NO。约束时间复杂度为 O(n)。
 * @author wanggege
 */
public class Demo01 {

    /**
     * 判断数组中的数字是否只出现一次
     * @param arr
     * @return
     */
    public static String isUnique(int[] arr){

        if (arr ==  null){
            return "YES";
        }
        //声明一个hashSet集合用于记录遍历到的数组元素，hashSet只能储存不重复的元素
        HashSet<Integer> hashSet = new HashSet<>();

        //循环遍历数组元素并通过hashSet的add方法将遍历的每个元素添加到hashSet中
        for (int i : arr) {
            //当hashSet的add方法添加重复元素时会返回false，执行判断中的代码，返回NO
            if (!hashSet.add(i)){
                return "NO";
            }
        }
        //将数组中所有元素添加到hashset中后，返回YES
        return "YES";

    }

    public static void main(String[] args) {

        int[] arr = {1,2,1};
        System.out.println(isUnique(arr));

    }
}
